import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import "./icon/iconfont.css";
import "../src/assets/css/commom.css";
import qfSubMenu from "qf-sub-menu"; //引入老师的组件
Vue.use(qfSubMenu);
Vue.use(ElementUI);
import "../src/assets/css/el-rest.css";
//通用组件
import nprogress from "nprogress";
import "nprogress/nprogress.css";
//进度条
//引入路由卫士
router.beforeEach((to, from, next) => {
  //开启进度条
  nprogress.start();
  //判断本地存储是否有token,如果有就发行，没有的话就返回登录页面
  let token = localStorage.getItem("token");
  if (token) {
    if (store.state.userMenu.length == 0) {
      // 用户菜单信息（菜单信息）没有了 需要重新发起请求
      store.dispatch("FETCH_MENULIST").then(() => {
        // 重新激活动态添加的路由,replace为true不产生历史记录

        next({ ...to, replace: true });
      });
    } else {
      // 可以放行
      next();
    }
  } else {
    //没有登录，不能访问登录界面以外的界面

    if (to.path == "/login") {
      next();
      //如果是访问的是登录页，放行
    } else {
      //如果是访问的是其他页，跳转到login页面
      next({ path: "/login" });
    }
  }
});

//关闭进度条
router.afterEach((to, from) => {
  nprogress.done();
});

Vue.config.productionTip = false;
Vue.use(ElementUI);
new Vue({
  router,
  store,
  render: (h) => h(App),
}).$mount("#app");
